package lockSupportTest;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.LockSupport;

/**
 * @program: javase
 * @description: 用于创建锁和其他同步类的基本线程阻塞原语。
 * 这个类与每个使用它的线程相关联，一个许可证（在Semaphore类的意义上）。
 * 最多只能有一个许可证unpark()
 * @author: luolidong
 * @create: 2021-06-23 20:55
 * @version: 1.0
 */
public class LockSupportTest {
    public static void main(String[] args) {
        Thread a = new Thread(() -> {
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("a");
//            让a阻塞，直到有许可证
            LockSupport.park();
            System.out.println("a唤醒");
        });
        a.start();
        new Thread(() -> {
            System.out.println("b");
            LockSupport.unpark(a);
            System.out.println("b唤醒a");
        }).start();
    }
}
